#pragma once

#include <Winbase.h>
#include <shellapi.h>
#include "../ProcessManager/ProcessManager.h"
#include "../Environment/Environment.h"


#define UM_NOTIFY WM_APP+1

typedef void (*typeBaseFunc)(void);

class k_Application
{
public:
	k_Application(HINSTANCE ah_Instance, int ai_CmdShow);
	~k_Application();

	int Run();

protected:
	static LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); 
	void CreateNotifyIcon();
	void StartInjection();
	void EndInjection();
	void PrepareRegistry();
	void CreateDirectories();

private:

	HINSTANCE mh_Instance;
    int mi_CmdShow;
	HWND mh_Handle;

	k_ProcessManager mk_ProcessManager;
	k_Environment mk_Environment;
	NOTIFYICONDATA mr_NotificationData;
};
